package test;

import java.util.Random;

/*
 * Java 随机函数学习 Random
 * 1. 先创建 Random 对象
 * 2. 调用nextInt(int bound)方法，传入一个 int 值，返回一个随机的 int 值，大于等于 0 且小于等于 bound-1，不包含 bound
 * 例：
 *     Random rand = new Random();
 *     int randomNum = rand.nextInt(10); // 0-10 之间的随机整数，不包括 10
 *     int randomNum = rand.nextInt(1, 10); // 1-10 之间的随机整数，不包括 10
 * */

public class RandomStudy {
  public static void main(String[] args) {
    Random rand = new Random();

    int[] tempArr = new int[16];

    for (int i = 0; i < tempArr.length; i++) {
      tempArr[i] = i;
    }

    for (int i = 0; i < tempArr.length; i++) {
      // 随机下标
      int index = rand.nextInt(tempArr.length);

      // 获取到的数组中的每一个成员
      int temp = tempArr[i];

      // 将数组中固定位置成员的值替换成随机的
      tempArr[i] = tempArr[index];

      // 再把随机位置成员的值换成原来的
      tempArr[index] = temp;
    }

    for (int i = 0; i < tempArr.length; i++) {
      System.out.print(tempArr[i] + "   ");
    }

    System.out.println();

    // 解法一
    //    int[][] data = new int[4][4];
    //    for (int i = 0; i < tempArr.length; i++) {
    //      data[i / 4][i % 4] = tempArr[i];
    //    }

    // 解法二
    int[][] data = new int[4][4];
    for (int i = 0; i < data.length; i++) {
      for (int j = 0; j < data[i].length; j++) {
        data[i][j] = tempArr[i * 4 + j];
      }
    }

    for (int i = 0; i < data.length; i++) {
      for (int j = 0; j < data[i].length; j++) {
        System.out.print(data[i][j] + " ");
      }
      System.out.println();
    }
  }
}
